package com.yy.service.impl;

import java.util.ArrayList;
import java.util.List;


import com.yy.common.utils.DateUtils;
import com.yy.domain.PayFeeItem;
import com.yy.domain.PayFeeSetting;
import com.yy.mapper.PayFeeItemMapper;
import com.yy.mapper.PayFeeSettingMapper;
import com.yy.service.IPayFeeItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;

/**
 * 收费项管理Service业务层处理
 *
 * @author leige
 * @date 2023-10-26
 */
@Service
public class PayFeeItemServiceImpl implements IPayFeeItemService {
    @Autowired
    private PayFeeItemMapper payFeeItemMapper;

    @Autowired
    private PayFeeSettingMapper payFeeSettingMapper;

    /**
     * 查询收费项管理
     *
     * @param id 收费项管理主键
     * @return 收费项管理
     */
    @Override
    public PayFeeItem selectPayFeeItemById(Long id) {
        return payFeeItemMapper.selectPayFeeItemById(id);
    }

    /**
     * 查询收费项管理列表
     *
     * @param payFeeItem 收费项管理
     * @return 收费项管理
     */
    @Override
    public List<PayFeeItem> selectPayFeeItemList(PayFeeItem payFeeItem) {
        return payFeeItemMapper.selectPayFeeItemList(payFeeItem);
    }

    /**
     * 新增收费项管理
     *
     * @param payFeeItem 收费项管理
     * @return 结果
     */
    @Override
    public int insertPayFeeItem(PayFeeItem payFeeItem) {
        payFeeItem.setCreateTime(DateUtils.getNowDate());
        return payFeeItemMapper.insertPayFeeItem(payFeeItem);
    }

    /**
     * 修改收费项管理
     *
     * @param payFeeItem 收费项管理
     * @return 结果
     */
    @Override
    public int updatePayFeeItem(PayFeeItem payFeeItem) {
        payFeeItem.setUpdateTime(DateUtils.getNowDate());
        return payFeeItemMapper.updatePayFeeItem(payFeeItem);
    }

    /**
     * 批量删除收费项管理
     *
     * @param ids 需要删除的收费项管理主键
     * @return 结果
     */
    @Override
    public int deletePayFeeItemByIds(Long[] ids) {
        return payFeeItemMapper.deletePayFeeItemByIds(ids);
    }

    /**
     * 删除收费项管理信息
     *
     * @param id 收费项管理主键
     * @return 结果
     */
    @Override
    public int deletePayFeeItemById(Long id) {
        return payFeeItemMapper.deletePayFeeItemById(id);
    }

    /**
     * 根据出租出售类型查询默认配置项
     *
     * @param type
     * @return
     */
    @Override
    public List<PayFeeItem> queryDefaultPayFeeItemByType(String type) {
        //根据类型查询收费的ID
        List<Long> ids = this.payFeeSettingMapper.queryDefaultPayFeeItemByType(type);
        if (CollectionUtils.isEmpty(ids)) {
            return new ArrayList<>(0);
        }
        //根据ids查询收费项目的数据
        return this.payFeeItemMapper.selectPayFeeItemByIds(ids);
    }

    /**
     * 保存默认收费项目
     *
     * @param type
     * @param ids
     * @return
     */
    @Override
    @Transactional
    public int addDefaultPayItemConfig(String type, Long[] ids) {
        //根据类型删除默认收费项目
        this.payFeeSettingMapper.deletePayFeeSettingByType(type);
        //保存
        if (ids != null && ids.length > 0) {
            for (Long id : ids) {
                PayFeeSetting payFeeSetting = new PayFeeSetting();
                payFeeSetting.setFeeItemId(id);
                payFeeSetting.setType(type);
                this.payFeeSettingMapper.insertPayFeeSetting(payFeeSetting);
            }
        }
        return 1;
    }

    /**
     * 根据配置项目ID和类型删除默认收费项目
     *
     * @param id
     * @param type
     * @return
     */
    @Override
    public int delDefaultPayFeeItem(Long id, String type) {
        return this.payFeeSettingMapper.delDefaultPayFeeItem(id,type);
    }

    @Override
    public int deleteDefaultPayFeeItemByFeeIdAndType(Long id, String type) {
        return 0;
    }
}
